<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>蒙层引导2</title>
    <style>
      .btn-group {
        display: flex;
        justify-content: space-between;
      }
      .guide-modal {
        position: fixed;
        z-index: 999;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.3);
      }
      .guide-box {
        position: absolute;
        width: 150px;
        min-height: 10px;
        padding: 10px;
        border-radius: 5px;
        background-color: #fff;
        transition: 0.5s;
        text-align: center;
      }
      .guide-btn {
        margin: 20px 5px 5px 5px;
      }
    </style>
  </head>
  <body>
    <!-- z-index + position + transition -->
    <!-- 
      核心实现： 高亮部分 通过控制 z-index 的值，让目标元素展示在蒙层之上 
      引导部分 通过 position: fixed 实现定位效果，并通过动态修改 left、top 属性实现引导弹窗跟随目标移动 
      过渡动画 通过 transition 实现位置的平滑移动 
      页面 位置/内容 发生变化时（如：resize、scroll 事件），需要重新计算位置信息 

      缺点： 
          当目标元素的父元素 position: fixed | absolute | sticky 时，目标元素的 z-index 无法超过蒙版层（可参考 shepherd.js 的 svg 解决方案） 
    -->
    <div class="btn-group">
      <button id="btn1">新增</button> <button id="btn2">删除</button> <button id="btn3">修改</button>
      <button id="btn4">完成</button>
    </div>
    <div id="guideModal" class="guide-modal">
      <div id="guideBox" class="guide-box">
        <div id="guideMessage"></div>
        <button id="guidePrevBtn" class="guide-btn prev">上一步</button>
        <button id="guideNextBtn" class="guide-btn next">下一步</button>
      </div>
    </div>
    <script src="./guide2.js"></script>
  </body>
</html>
